import Storage from './storage'
const LocalStorage = new Storage('', 'localStorage')

/**
 * 若是按照后台配置设置主题色
 * 1、接口数据格式： {'main-text': 'red', 'marin-color': 'blue'}
 * 2、遍历json对象，将key与value传给函数setThemeColor(themeModule, color)即可
 */

/**
 * @description: 初始化主题色
 * @param {*}
 * @return {*}
 * @default:
 */
const initThemeColor = () => {
    const module = LocalStorage.getItem('themeModule');

    for (const key in module) {
        let color = module[key];
        if (color) {
            setRootColor(key, color);
        }
    }
};
/**
 * @description: 设置主题色
 * @param {string} color
 * @return {*}
 * @default:
 */
const setThemeColor = (themeModule, color) => {
    setRootColor(themeModule, color);
    // 本地存储模块颜色
    setLocalStorage(themeModule, color)
};

/**
 * @description: 设置css变量
 * @param {string} themeModule
 * @param {string} color
 * @return {*}
 * @default:
 */
function setRootColor(themeModule, color) {
    let styles = document.documentElement;

    styles.style.setProperty(`--${themeModule}`, color);
}

/**
 * 本地存theme 主题色
 * @param {string} themeModule 主题模块名
 * @param {string} color 主题模块名颜色
 */
function setLocalStorage(themeModule, color) {
    // 查询本地存储是否存在已知 模块配色
    const modules = LocalStorage.getItem('themeModule') || {};
    let obj = {...modules}
    obj[themeModule] = color
    LocalStorage.setItem('themeModule', obj)
}

export { initThemeColor, setThemeColor };
